The conventional method for displaying a moving picture is to display a sequence of still images in rapid succession. In a typical high quality computer animation, 30 or more still images are displayed each second. For a moving picture of this type at a typical screen resolution (1280 by 1024 pixels) to be transmitted uncompressed across a computer network, a data transfer bandwidth of around 944 Mb/s is required. Such is over 9 times the total bandwidth available on a typical 100 Mb/s local area network. Very substantial data compression is therefore required.
There are several conventional image stream compression techniques. One reduces the size of the individual images. Another reduces the amount of color information in the image. The number of frames being transmitted can also be reduced. Some prior art image compression standards use a combination of these and other techniques.
The number of images transmitted in an image stream can be such that the transmitter only periodically sends images, e.g., every twelfth actual image. The receiver reconstructs an approximation of the missing intervening images using predicted images and interpolation, or bi-directional images. The predicted images are typically based on a form of motion compensation derived from an analysis of the movement of objects in the actual images. A typical image sequence might be IBBBPBBBPBBBI, where “I” represents an actual transmitted image, “P” represents a predicted image, and “B” represents an interpolated bi-directional image. But undesirable artifacts are created by this process and can produce jagged lines and blurry motion.
A transmitting computer can send instructions for reconstructing a scene to a receiving computer. For example, where the transmitted image stream is a three-dimensional moving picture scene, such as a virtual reality model of a building or a scene from a computer game. For a simple scene, such instructions can need substantially less transmission bandwidth than that required by the rendered images. More complex scenes may be such that the instructions require more bandwidth than transmitting the images. Client computers rarely have sufficient processing power to render complex moving scenes in real time, so this option is difficult to take advantage of.
Images of three-dimensional scenes can be rendered using a commercial graphics application program interface (API), e.g., OpenGL or DirectX. When an image is rendered, each pixel in the image has a depth value, a “Z-value”, and one or more color values. Such format is typical of most hardware three-dimensional graphics accelerators.